From 19cd34af70b5f4a0f2831b3dfd36497772c2543d Mon Sep 17 00:00:00 2001 From: oliskoli Date: Sat, 2 Jun 2007 20:26:10 +0000 Subject: [PATCH] Say "Goodbye" to unknown_course and unknown_speed. git-svn-id: http://gpsbabel.googlecode.com/svn/trunk@2809 f51c46e8-681c-474f-0cfe-069cfd0219fb --- gpsbabel/alan.c | 6 ++-- gpsbabel/axim_gpb.c | 4 +-- gpsbabel/cetus.c | 4 +-- gpsbabel/coto.c | 4 +-- gpsbabel/csv_util.c | 4 +-- gpsbabel/defs.h | 17 +++++++--- gpsbabel/delgpl.c | 6 ++-- gpsbabel/ggv_log.c | 4 +-- gpsbabel/gpssim.c | 2 +- gpsbabel/gpx.c | 8 ++--- gpsbabel/kml.c | 6 ++-- gpsbabel/nmea.c | 6 ++-- gpsbabel/reference/earth-expertgps.kml | 46 -------------------------- gpsbabel/route.c | 6 ++-- gpsbabel/stmsdf.c | 8 ++--- gpsbabel/trackfilter.c | 14 ++++---- gpsbabel/unicsv.c | 4 +-- gpsbabel/vitosmt.c | 4 +-- gpsbabel/waypt.c | 2 -- 19 files changed, 57 insertions(+), 98 deletions(-) diff --git a/gpsbabel/alan.c b/gpsbabel/alan.c index fbc1f7251..c8b1d484f 100644 --- a/gpsbabel/alan.c +++ b/gpsbabel/alan.c @@ -586,9 +586,9 @@ static void trl_read(void) { WP->longitude = pt2deg(trklog->pt[j].x); WP->altitude = hgt2m(trklog->sh[j].height); if ( trklog->sh[j].speed >= 0 ) - WP->speed = sp2mps(trklog->sh[j].speed); + WAYPT_SET(WP, speed, sp2mps(trklog->sh[j].speed)) else /* bad speed < 0 - set to 0.0 */ - WP->speed = unknown_speed; + WAYPT_UNSET(WP, speed); track_add_wpt(TL, WP); } } @@ -796,7 +796,7 @@ static void trl_track_wpt(const waypoint *WP) { trklog = &(TRL.trklog[trk_idx]); trklog->pt[log_idx].x = deg2pt( WP->longitude); trklog->pt[log_idx].y = deg2pt(-WP->latitude); - if ( WP->speed != unknown_speed ) + if WAYPT_HAS(WP, speed) trklog->sh[log_idx].speed = mps2sp(WP->speed); if ( WP->altitude != unknown_alt ) trklog->sh[log_idx].height = m2hgt(WP->altitude); diff --git a/gpsbabel/axim_gpb.c b/gpsbabel/axim_gpb.c index d7e70da6f..6d083cee8 100644 --- a/gpsbabel/axim_gpb.c +++ b/gpsbabel/axim_gpb.c @@ -87,12 +87,12 @@ decode_buff(const char *buff, route_head *track) /* These values can be, but must not be right. */ /* Further checks are needed to verify that. */ /* (!!! reference data !!!) */ - wpt->course = dir; + WAYPT_SET(wpt, course, dir); wpt->hdop = hdop; wpt->vdop = vdop; wpt->pdop = pdop; wpt->sat = sats; - wpt->speed = spd * 10; + WAYPT_SET(wpt, speed, spd * 10); #endif /* We don't have a header with some magic fixed numbers or strings. */ /* So let us check the range for some basic values */ diff --git a/gpsbabel/cetus.c b/gpsbabel/cetus.c index 6f17045ca..2406bdd71 100644 --- a/gpsbabel/cetus.c +++ b/gpsbabel/cetus.c @@ -180,9 +180,9 @@ read_track_point(cetus_track_point_t *data, const time_t basetime) if (data->hdop != -1) wpt->hdop = (float) data->hdop / 10; i = be_read16(&data->speed); - if (i != 10000) wpt->speed = ((float) i / 10) * 0.514444; /* meters/second */ + if (i != 10000) WAYPT_SET(wpt, speed, ((float) i / 10) * 0.514444); /* meters/second */ i = be_read16(&data->course); - if (i != 4000) wpt->course = (float) i / 10; + if (i != 4000) WAYPT_SET(wpt, course, (float) i / 10); switch(data->hour / 32) /* extract fix */ { diff --git a/gpsbabel/coto.c b/gpsbabel/coto.c index c5dfc59f4..4b883707f 100644 --- a/gpsbabel/coto.c +++ b/gpsbabel/coto.c @@ -199,7 +199,7 @@ coto_track_read(struct pdb *pdb) wpt_tmp->latitude = DEG(pdb_read_double(&rec->latitude)); // It's not the course, so leave it out for now - // wpt_tmp->course = pdb_read_double(&rec->arc); + // WAYPT_SET(wpt_tmp, course, pdb_read_double(&rec->arc)); wpt_tmp->altitude = be_read16(&rec->alt); if (internals) @@ -234,7 +234,7 @@ coto_track_read(struct pdb *pdb) wpt_tmp->fix = fix_dgps; break; } - wpt_tmp->speed = be_read16(&rec->speed)/10.0; + WAYPT_SET(wpt_tmp, speed, be_read16(&rec->speed)/10.0); rec->time = be_read32(&rec->time); if (rec->time != 0) { diff --git a/gpsbabel/csv_util.c b/gpsbabel/csv_util.c index 3af2b50bd..d3e760abf 100644 --- a/gpsbabel/csv_util.c +++ b/gpsbabel/csv_util.c @@ -898,10 +898,10 @@ xcsv_parse_val(const char *s, waypoint *wpt, const field_map_t *fmp) /* PATH CONVERSIONS ************************************************/ if (strcmp(fmp->key, "PATH_SPEED") == 0) { - wpt->speed = atof(s); + WAYPT_SET(wpt, speed, atof(s)); } else if (strcmp(fmp->key, "PATH_COURSE") == 0) { - wpt->course = atof(s); + WAYPT_SET(wpt, course, atof(s)); } else /* TIME CONVERSIONS ***************************************************/ diff --git a/gpsbabel/defs.h b/gpsbabel/defs.h index 62840196f..d7367740f 100644 --- a/gpsbabel/defs.h +++ b/gpsbabel/defs.h @@ -284,13 +284,22 @@ typedef struct { unsigned int icon_descr_is_dynamic:1; unsigned int shortname_is_synthetic:1; unsigned int cet_converted:1; /* strings are converted to UTF8; interesting only for input */ - unsigned int temperature:1; /* temperature field set */ - unsigned int proximity:1; /* proximity field set */ + /* "flagged fields" */ + unsigned int temperature:1; /* temperature field is set */ + unsigned int proximity:1; /* proximity field is set */ + unsigned int course:1; /* course field is set */ + unsigned int speed:1; /* speed field is set */ + /* !ToDo! + unsigned int altitude:1; /+ altitude field is set +/ + ... and others + */ + } wp_flags; #define WAYPT_SET(wpt,member,val) { wpt->member = (val); wpt->wpt_flags.member = 1; } #define WAYPT_GET(wpt,member,def) (wpt->wpt_flags.member) ? (wpt->member) : (def) - +#define WAYPT_UNSET(wpt,member) wpt->wpt_flags.member = 0 +#define WAYPT_HAS(wpt,member) (wpt->wpt_flags.member) /* * This is a waypoint, as stored in the GPSR. It tries to not * cater to any specific model or protocol. Anything that needs to @@ -913,7 +922,5 @@ int color_to_bbggrr(char *cname); * but that's not very nice for the folks near sea level. */ #define unknown_alt -99999999.0 -#define unknown_course -999.0 -#define unknown_speed -999.0 #endif /* gpsbabel_defs_h_included */ diff --git a/gpsbabel/delgpl.c b/gpsbabel/delgpl.c index 76c88180c..dc4e3d65a 100644 --- a/gpsbabel/delgpl.c +++ b/gpsbabel/delgpl.c @@ -70,9 +70,9 @@ gpl_read(void) wpt_tmp->altitude = FEET_TO_METERS(alt_feet); wpt_tmp->creation_time = le_read32(&gp.tm); - wpt_tmp->course = le_read_double(&gp.heading); - wpt_tmp->speed = le_read_double(&gp.speed); - wpt_tmp->speed = MILES_TO_METERS(wpt_tmp->speed)/3600; + WAYPT_SET(wpt_tmp, course, le_read_double(&gp.heading)); + WAYPT_SET(wpt_tmp, speed, le_read_double(&gp.speed)); + WAYPT_SET(wpt_tmp, speed, MILES_TO_METERS(wpt_tmp->speed)/3600); track_add_wpt(track_head, wpt_tmp); } diff --git a/gpsbabel/ggv_log.c b/gpsbabel/ggv_log.c index dbb14544a..ef31cba31 100644 --- a/gpsbabel/ggv_log.c +++ b/gpsbabel/ggv_log.c @@ -125,13 +125,13 @@ ggv_log_read(void) xlon = (double)deg + ((double)min / (double)60) + (sec / (double)3600.0); wpt->longitude = xlon; - wpt->course = le_read16(&buf[16 + 0]); + WAYPT_SET(wpt, course, le_read16(&buf[16 + 0])); if (ggv_log_ver == 10) { double secs; wpt->altitude = le_read16(&buf[16 + 2]); - wpt->speed = le_read16(&buf[16 + 4]); + WAYPT_SET(wpt, speed, le_read16(&buf[16 + 4])); tm.tm_year = le_read16(&buf[16 + 8]); tm.tm_mon = le_read16(&buf[16 + 10]); tm.tm_mday = le_read16(&buf[16 + 12]); diff --git a/gpsbabel/gpssim.c b/gpsbabel/gpssim.c index 67cab0dae..067d41bd4 100644 --- a/gpsbabel/gpssim.c +++ b/gpsbabel/gpssim.c @@ -104,7 +104,7 @@ gpssim_write_pt(const waypoint *wpt) char obuf[1024]; double lat, lon; - if (wpt->speed > 0) { + if WAYPT_HAS(wpt, speed) { gpssim_write_spd(mpsec2knots(wpt->speed)); } diff --git a/gpsbabel/gpx.c b/gpsbabel/gpx.c index 7d307daac..c287bc746 100644 --- a/gpsbabel/gpx.c +++ b/gpsbabel/gpx.c @@ -997,10 +997,10 @@ gpx_end(void *data, const XML_Char *xml_el) trk_head->rte_num = atoi(cdatastrp); break; case tt_trk_trkseg_trkpt_course: - wpt_tmp->course = atof(cdatastrp); + WAYPT_SET(wpt_tmp, course, atof(cdatastrp)); break; case tt_trk_trkseg_trkpt_speed: - wpt_tmp->speed = atof(cdatastrp); + WAYPT_SET(wpt_tmp, speed, atof(cdatastrp)); break; /* @@ -1597,11 +1597,11 @@ gpx_track_disp(const waypoint *waypointp) /* These were accidentally removed from 1.1 */ if (gpx_wversion_num == 10) { - if (waypointp->course >= 0) { + if WAYPT_HAS(waypointp, course) { gbfprintf(ofd, " %f\n", waypointp->course); } - if (waypointp->speed >= 0) { + if WAYPT_HAS(waypointp, speed) { gbfprintf(ofd, " %f\n", waypointp->speed); } diff --git a/gpsbabel/kml.c b/gpsbabel/kml.c index 47ad9937e..8a0b9cef2 100644 --- a/gpsbabel/kml.c +++ b/gpsbabel/kml.c @@ -537,13 +537,13 @@ static void kml_output_description(const waypoint *pt) if (pt->altitude != unknown_alt) TD2("Altitude: %.1f %s", alt, alt_units); if (pt->heartrate) TD("Heart rate: %d", pt->heartrate); if (pt->cadence) TD("Cadence: %d", pt->cadence); - if (pt->wpt_flags.temperature) TD("Temperature: %.1f", pt->temperature); - if (pt->speed > 0) { + if WAYPT_HAS(pt, temperature) TD("Temperature: %.1f", pt->temperature); + if WAYPT_HAS(pt, speed) { char *spd_units; double spd = fmt_speed(pt->speed, &spd_units); TD2("Speed: %.1f %s", spd, spd_units); } - TD("Heading: %.1f", pt->course); + if WAYPT_HAS(pt, course) TD("Heading: %.1f", pt->course); /* This really shouldn't be here, but as of this writing, * Earth can't edit/display the TimeStamp. */ diff --git a/gpsbabel/nmea.c b/gpsbabel/nmea.c index a814f3b9e..841f2483d 100644 --- a/gpsbabel/nmea.c +++ b/gpsbabel/nmea.c @@ -655,12 +655,12 @@ gpvtg_parse(char *ibuf) &course,&ct,&magcourse,&cm,&speed_n,&cn,&speed_k,&ck); if (curr_waypt) { - curr_waypt->course = course; + WAYPT_SET(curr_waypt, course, course); if (speed_k>0) - curr_waypt->speed = speed_k*kmh2mps; + WAYPT_SET(curr_waypt, speed, speed_k*kmh2mps) else - curr_waypt->speed = speed_n*kts2mps; + WAYPT_SET(curr_waypt, speed, speed_n*kts2mps); } diff --git a/gpsbabel/reference/earth-expertgps.kml b/gpsbabel/reference/earth-expertgps.kml index b46cb960d..9c66b0a37 100644 --- a/gpsbabel/reference/earth-expertgps.kml +++ b/gpsbabel/reference/earth-expertgps.kml @@ -2374,7 +2374,6 @@ Longitude: -71.107628 Latitude: 42.430950 Altitude: 77.0 ft - Heading: -999.0 Time: 2001-06-02T00:18:15Z ]]> @@ -2397,7 +2396,6 @@ Longitude: -71.109236 Latitude: 42.431240 Altitude: 87.1 ft - Heading: -999.0 Time: 2001-11-07T23:53:41Z ]]> @@ -2420,7 +2418,6 @@ Longitude: -71.109942 Latitude: 42.434980 Altitude: 148.6 ft - Heading: -999.0 Time: 2001-11-07T23:53:41Z ]]> @@ -2443,7 +2440,6 @@ Longitude: -71.113223 Latitude: 42.436757 Altitude: 123.4 ft - Heading: -999.0 Time: 2001-11-28T21:05:28Z ]]> @@ -2466,7 +2462,6 @@ Longitude: -71.114456 Latitude: 42.439018 Altitude: 185.0 ft - Heading: -999.0 Time: 2001-06-02T03:26:55Z ]]> @@ -2489,7 +2484,6 @@ Longitude: -71.114803 Latitude: 42.438594 Altitude: 151.0 ft - Heading: -999.0 Time: 2001-11-28T21:05:28Z ]]> @@ -2512,7 +2506,6 @@ Longitude: -71.116146 Latitude: 42.438917 Altitude: 147.1 ft - Heading: -999.0 Time: 2001-11-16T23:03:38Z ]]> @@ -2535,7 +2528,6 @@ Longitude: -71.119277 Latitude: 42.438878 Altitude: 146.3 ft - Heading: -999.0 Time: 2001-11-28T21:05:28Z ]]> @@ -2558,7 +2550,6 @@ Longitude: -71.119689 Latitude: 42.439227 Altitude: 189.0 ft - Heading: -999.0 Time: 2001-06-02T03:26:55Z ]]> @@ -2581,7 +2572,6 @@ Longitude: -71.120925 Latitude: 42.439993 Altitude: 177.0 ft - Heading: -999.0 Time: 2001-06-02T00:18:14Z ]]> @@ -2604,7 +2594,6 @@ Longitude: -71.121676 Latitude: 42.441727 Altitude: 221.0 ft - Heading: -999.0 Time: 2001-06-02T00:18:16Z ]]> @@ -2627,7 +2616,6 @@ Longitude: -71.122044 Latitude: 42.443904 Altitude: 166.0 ft - Heading: -999.0 Time: 2001-11-28T21:05:28Z ]]> @@ -2650,7 +2638,6 @@ Longitude: -71.122845 Latitude: 42.445359 Altitude: 202.3 ft - Heading: -999.0 Time: 2001-11-28T21:05:28Z ]]> @@ -2673,7 +2660,6 @@ Longitude: -71.121447 Latitude: 42.447298 Altitude: 419.0 ft - Heading: -999.0 Time: 2001-06-02T03:26:58Z ]]> @@ -2696,7 +2682,6 @@ Longitude: -71.122320 Latitude: 42.449765 Altitude: 393.1 ft - Heading: -999.0 Time: 2001-11-07T23:53:41Z ]]> @@ -2719,7 +2704,6 @@ Longitude: -71.121746 Latitude: 42.451442 Altitude: 244.8 ft - Heading: -999.0 Time: 2001-11-07T23:53:41Z ]]> @@ -2742,7 +2726,6 @@ Longitude: -71.121211 Latitude: 42.453256 Altitude: 255.9 ft - Heading: -999.0 Time: 2001-11-07T23:53:41Z ]]> @@ -2765,7 +2748,6 @@ Longitude: -71.119356 Latitude: 42.456252 Altitude: 258.2 ft - Heading: -999.0 Time: 2001-11-07T23:53:41Z ]]> @@ -2788,7 +2770,6 @@ Longitude: -71.119676 Latitude: 42.456592 Altitude: 258.2 ft - Heading: -999.0 Time: 2001-11-07T23:53:41Z ]]> @@ -2811,7 +2792,6 @@ Longitude: -71.119845 Latitude: 42.457388 Altitude: 242.0 ft - Heading: -999.0 Time: 2001-06-02T03:27:00Z ]]> @@ -2834,7 +2814,6 @@ Longitude: -71.119135 Latitude: 42.458148 Altitude: 224.0 ft - Heading: -999.0 Time: 2001-06-02T03:27:00Z ]]> @@ -2857,7 +2836,6 @@ Longitude: -71.117693 Latitude: 42.459377 Altitude: 210.0 ft - Heading: -999.0 Time: 2001-06-02T03:27:01Z ]]> @@ -2880,7 +2858,6 @@ Longitude: -71.119828 Latitude: 42.464183 Altitude: 173.9 ft - Heading: -999.0 Time: 2001-11-28T21:05:28Z ]]> @@ -2903,7 +2880,6 @@ Longitude: -71.119399 Latitude: 42.465650 Altitude: 185.0 ft - Heading: -999.0 Time: 2001-06-02T03:27:02Z ]]> @@ -2926,7 +2902,6 @@ Longitude: -71.119328 Latitude: 42.465913 Altitude: 211.7 ft - Heading: -999.0 Time: 2001-11-07T23:53:41Z ]]> @@ -2949,7 +2924,6 @@ Longitude: -71.113574 Latitude: 42.467110 Altitude: 176.0 ft - Heading: -999.0 Time: 2001-06-02T03:27:02Z ]]> @@ -2972,7 +2946,6 @@ Longitude: -71.110067 Latitude: 42.466459 Altitude: 160.0 ft - Heading: -999.0 Time: 2001-06-02T03:27:02Z ]]> @@ -2995,7 +2968,6 @@ Longitude: -71.109410 Latitude: 42.466557 Altitude: 161.0 ft - Heading: -999.0 Time: 2001-06-02T03:27:02Z ]]> @@ -3018,7 +2990,6 @@ Longitude: -71.107117 Latitude: 42.463495 Altitude: 205.0 ft - Heading: -999.0 Time: 2001-06-02T03:27:03Z ]]> @@ -3041,7 +3012,6 @@ Longitude: -71.107360 Latitude: 42.465687 Altitude: 288.0 ft - Heading: -999.0 Time: 2001-06-02T03:27:03Z ]]> @@ -3064,7 +3034,6 @@ Longitude: -71.106170 Latitude: 42.459986 Altitude: 239.3 ft - Heading: -999.0 Time: 2001-11-16T23:03:38Z ]]> @@ -3087,7 +3056,6 @@ Longitude: -71.105116 Latitude: 42.457616 Altitude: 239.0 ft - Heading: -999.0 Time: 2001-06-02T03:27:04Z ]]> @@ -3110,7 +3078,6 @@ Longitude: -71.105206 Latitude: 42.453845 Altitude: 218.8 ft - Heading: -999.0 Time: 2001-11-16T23:03:38Z ]]> @@ -3133,7 +3100,6 @@ Longitude: -71.105413 Latitude: 42.451430 Altitude: 188.9 ft - Heading: -999.0 Time: 2001-11-16T23:03:38Z ]]> @@ -3156,7 +3122,6 @@ Longitude: -71.106158 Latitude: 42.448448 Altitude: 204.0 ft - Heading: -999.0 Time: 2001-06-02T03:27:04Z ]]> @@ -3179,7 +3144,6 @@ Longitude: -71.106624 Latitude: 42.447804 Altitude: 205.0 ft - Heading: -999.0 Time: 2001-06-02T03:27:04Z ]]> @@ -3202,7 +3166,6 @@ Longitude: -71.108882 Latitude: 42.444773 Altitude: 206.0 ft - Heading: -999.0 Time: 2001-06-02T03:27:05Z ]]> @@ -3225,7 +3188,6 @@ Longitude: -71.106301 Latitude: 42.443592 Altitude: 182.0 ft - Heading: -999.0 Time: 2001-06-02T03:27:05Z ]]> @@ -3248,7 +3210,6 @@ Longitude: -71.111441 Latitude: 42.442981 Altitude: 210.0 ft - Heading: -999.0 Time: 2001-06-02T03:26:58Z ]]> @@ -3271,7 +3232,6 @@ Longitude: -71.110975 Latitude: 42.442196 Altitude: 210.0 ft - Heading: -999.0 Time: 2001-06-02T03:26:55Z ]]> @@ -3294,7 +3254,6 @@ Longitude: -71.113220 Latitude: 42.441754 Altitude: 185.0 ft - Heading: -999.0 Time: 2001-06-02T03:26:55Z ]]> @@ -3317,7 +3276,6 @@ Longitude: -71.114456 Latitude: 42.439018 Altitude: 185.0 ft - Heading: -999.0 Time: 2001-06-02T03:26:55Z ]]> @@ -3340,7 +3298,6 @@ Longitude: -71.113223 Latitude: 42.436757 Altitude: 123.4 ft - Heading: -999.0 Time: 2001-11-28T21:05:28Z ]]> @@ -3363,7 +3320,6 @@ Longitude: -71.109942 Latitude: 42.434980 Altitude: 148.6 ft - Heading: -999.0 Time: 2001-11-07T23:53:41Z ]]> @@ -3386,7 +3342,6 @@ Longitude: -71.109236 Latitude: 42.431240 Altitude: 87.1 ft - Heading: -999.0 Time: 2001-11-07T23:53:41Z ]]> @@ -3409,7 +3364,6 @@ Longitude: -71.107628 Latitude: 42.430950 Altitude: 77.0 ft - Heading: -999.0 Time: 2001-06-02T00:18:15Z ]]> diff --git a/gpsbabel/route.c b/gpsbabel/route.c index d6c6a3880..2bbb6f90b 100644 --- a/gpsbabel/route.c +++ b/gpsbabel/route.c @@ -521,8 +521,8 @@ void track_recompute(const route_head *trk, computed_trkdata **trkdatap) tlon = RAD(this->longitude); plat = RAD(prev->latitude); plon = RAD(prev->longitude); - this->course = heading_true_degrees(plat, plon, - tlat, tlon); + WAYPT_SET(this, course, heading_true_degrees(plat, plon, + tlat, tlon)); dist = radtometers(gcdist(plat, plon, tlat, tlon)); /* @@ -536,7 +536,7 @@ void track_recompute(const route_head *trk, computed_trkdata **trkdatap) * If we've moved as much as a meter, recompute speed. */ if (timed && (dist > 1)) { - this->speed = dist / labs(timed); + WAYPT_SET(this, speed, dist / labs(timed)); if (this->speed > tdata->max_spd) { tdata->max_spd = this->speed; } diff --git a/gpsbabel/stmsdf.c b/gpsbabel/stmsdf.c index 8f0ded034..89aa076e2 100644 --- a/gpsbabel/stmsdf.c +++ b/gpsbabel/stmsdf.c @@ -271,7 +271,7 @@ parse_point(char *line) case 7: switch(what) { case 0: - wpt->speed = atof(str) * 3.6; break; + WAYPT_SET(wpt, speed, atof(str) * 3.6); break; case 3: WAYPT_SET(wpt, proximity, atof(str)); xasprintf(&wpt->notes, "Alarm point: radius=%s", str); @@ -279,7 +279,7 @@ parse_point(char *line) } break; case 8: - if (what == 0) wpt->course = atof(str); + if (what == 0) WAYPT_SET(wpt, course, atof(str)); break; case 9: case 10: @@ -439,8 +439,8 @@ calculate(const waypoint *wpt, double *dist, double *speed, double *course, if (asc) *asc = 0; if (desc) *desc = 0; } - if (wpt->speed != unknown_speed) *speed = wpt->speed / 3.6; /* -> meters per second */ - if (wpt->course != unknown_course) *course = wpt->course; + if WAYPT_HAS(wpt, speed) *speed = wpt->speed / 3.6; /* -> meters per second */ + if WAYPT_HAS(wpt, course) *course = wpt->course; } /* pre-calculation callbacks */ diff --git a/gpsbabel/trackfilter.c b/gpsbabel/trackfilter.c index 3b3a1cbcf..408d64ebd 100644 --- a/gpsbabel/trackfilter.c +++ b/gpsbabel/trackfilter.c @@ -729,29 +729,29 @@ trackfilter_synth(void) } if ( first ) { if ( opt_course ) { - wpt->course = 0; + WAYPT_SET(wpt, course, 0); } if ( opt_speed ) { - wpt->speed = 0; + WAYPT_SET(wpt, speed, 0); } first = 0; } else { if ( opt_course ) { - wpt->course = heading_true_degrees( RAD(oldlat), + WAYPT_SET(wpt, course, heading_true_degrees( RAD(oldlat), RAD(oldlon),RAD(wpt->latitude), - RAD(wpt->longitude) ); + RAD(wpt->longitude)) ); } if ( opt_speed ) { if ( oldtime != wpt->creation_time ) { - wpt->speed = radtometers(gcdist( + WAYPT_SET(wpt, speed, radtometers(gcdist( RAD(oldlat), RAD(oldlon), RAD(wpt->latitude), RAD(wpt->longitude))) / - labs(wpt->creation_time-oldtime); + labs(wpt->creation_time-oldtime)); } else { - wpt->speed = unknown_speed; + WAYPT_UNSET(wpt, speed); } } } diff --git a/gpsbabel/unicsv.c b/gpsbabel/unicsv.c index 34e9e34d7..04e061a97 100644 --- a/gpsbabel/unicsv.c +++ b/gpsbabel/unicsv.c @@ -424,12 +424,12 @@ unicsv_parse_one_line(char *ibuf) break; case fld_speed: - wpt->speed = atof(s); + WAYPT_SET(wpt, speed, atof(s)); unicsv_data_type = trkdata; break; case fld_course: - wpt->course = atof(s); + WAYPT_SET(wpt, course, atof(s)); unicsv_data_type = trkdata; break; diff --git a/gpsbabel/vitosmt.c b/gpsbabel/vitosmt.c index f2b6f2362..a0d290726 100644 --- a/gpsbabel/vitosmt.c +++ b/gpsbabel/vitosmt.c @@ -195,8 +195,8 @@ vitosmt_read(void) wpt_tmp->shortname =xcalloc(16,1); snprintf(wpt_tmp->shortname, 15 , "WP%04d", ++serial); - wpt_tmp->speed = speed*kts2mps; /* meters per second */ - wpt_tmp->course = course; + WAYPT_SET(wpt_tmp, speed, speed*kts2mps); /* meters per second */ + WAYPT_SET(wpt_tmp, course, course); wpt_tmp->pdop = pdop; /* diff --git a/gpsbabel/waypt.c b/gpsbabel/waypt.c index b884eba08..b0190d6f7 100644 --- a/gpsbabel/waypt.c +++ b/gpsbabel/waypt.c @@ -151,8 +151,6 @@ waypt_new(void) wpt = (waypoint *) xcalloc(sizeof (*wpt), 1); wpt->altitude = unknown_alt; - wpt->course = unknown_course; - wpt->speed = unknown_speed; wpt->fix = fix_unknown; wpt->sat = -1; -- 2.30.2